﻿namespace CodeContrib
{
	public class RandomFirstName : IRandom<string>
	{
		private static readonly string[] _firstNames;
		private readonly RandomItem<string> _randomFirstName;

		static RandomFirstName()
		{
			_firstNames = new[]
				              {
					              "Aaden", "AadeAaliyah", "Aaron", "Abby", "Abel", "Abigail", "Abraham", "Adam", "Adan", "Addison", "Addyson", "Adeline", "Aden", "Adrian", "Adriana", "Adrianna", "Aidan", "Aiden", "Aileen", "Ainsley", "Alaina", "Alan", "Alana", "Alanna", "Alayna", "Albert", "Alberto", "Alec", "Alejandra", "Alejandro", "Alessandra", "Alex", "Alexa", "Alexander", "Alexandra", "Alexandria", "Alexia", "Alexis", "Alexis", "Alfredo", "Ali", "Alice", "Alicia", "Alijah", "Alina", "Alison", "Alissa", "Alivia", "Aliyah", "Allen", "Allie", "Allison", "Allisson", "Allyson", "Alondra", "Alvin", "Alyson", "Alyssa", "Amanda", "Amari", "Amari", "Amaya", "Amber", "Amelia", "Amir", "Amira", "Amiyah", "Amy", "Amya", "Ana", "Anahi", "Anastasia", "Anaya", "Anderson", "Andre", "Andrea", "Andres", "Andrew", "Andy", "Angel", "Angel", "Angela", "Angelica", "Angelina", "Angelo", "Angie", "Aniya", "Aniyah", "Anna", "Annabelle", "Anne", "Annie", "Annika", "Anthony", "Antonio", "Anya", "April", "Ariana", "Arianna", "Ariel", "Armando", "Arthur", "Arturo", "Asher", "Ashley", "Ashlyn", "Ashlynn", "Ashton", "Asia", "Athena", "Aubree", "Aubrey", "Aubrie", "Audrey", "Audrina", "August", "Aurora", "Austin", "Autumn", "Ava", "Avery", "Avery", "Axel", "Ayden", "Ayla", "Bailey", "Baylee", "Beau", "Beckett", "Bella", "Benjamin", "Bennett", "Bethany", "Bianca", "Blake", "Braden", "Bradley", "Brady", "Braeden", "Braiden", "Brandon", "Braxton", "Brayan", "Brayden", "Braydon", "Braylon", "Breanna", "Brenda", "Brendan", "Brenden", "Brenna", "Brennan", "Brett", "Brian", "Briana", "Brianna", "Bridget", "Brielle", "Brittany", "Brock", "Brodie", "Brody", "Brooke", "Brooklyn", "Brooklynn", "Bruce", "Bryan", "Bryant", "Bryce", "Brycen", "Brynn", "Bryson", "Byron", "Cade", "Caden", "Cadence", "Caiden", "Caitlin", "Caitlyn", "Caleb", "Cali", "Callie", "Calvin", "Camden", "Cameron", "Cameron", "Camila", "Camille", "Camron", "Camryn", "Cara", "Carl", "Carlos", "Carly", "Carmen", "Carolina", "Caroline", "Carson", "Carter", "Casey", "Casey", "Cash", "Cassandra", "Cassidy", "Catherine", "Cayden", "Cecilia", "Celeste", "Cesar", "Chad", "Chance", "Chandler", "Charles", "Charlie", "Charlotte", "Chase", "Chelsea", "Cheyanne", "Cheyenne", "Chloe", "Chris", "Christian", "Christina", "Christopher", "Ciara", "Cindy", "Claire", "Clara", "Claudia", "Clayton", "Cody", "Cohen", "Colby", "Cole", "Colin", "Collin", "Colten", "Colton", "Conner", "Connor", "Cooper", "Cora", "Corbin", "Corey", "Cory", "Courtney", "Cristian", "Cristopher", "Cruz", "Crystal", "Curtis", "Cynthia", "Daisy", "Dakota", "Dakota", "Dallas", "Dalton", "Damian", "Damien", "Damon", "Dana", "Dane", "Danica", "Daniel", "Daniela", "Daniella", "Danielle", "Danika", "Danna", "Danny", "Dante", "Darius", "Darren", "David", "Davion", "Davis", "Dawson", "Dayana", "Dayton", "Dean", "Deandre", "Declan", "Delaney", "Delilah", "Denise", "Dennis", "Derek", "Derrick", "Desiree", "Desmond", "Destiny", "Devin", "Devon", "Diamond", "Diana", "Diego", "Dillon", "Dominic", "Dominick", "Donald", "Donovan", "Dorian", "Douglas", "Drake", "Drew", "Dulce", "Dustin", "Dylan", "Easton", "Eddie", "Eden", "Edgar", "Eduardo", "Edward", "Edwin", "Elaina", "Eleanor", "Elena", "Eli", "Eliana", "Elias", "Elijah", "Elise", "Eliza", "Elizabeth", "Ella", "Elle", "Ellie", "Elliot", "Elliott", "Emanuel", "Emely", "Emerson", "Emerson", "Emery", "Emilee", "Emilia", "Emiliano", "Emilio", "Emily", "Emma", "Emmanuel", "Enrique", "Eric", "Erica", "Erick", "Erik", "Erika", "Erin", "Ernesto", "Esmeralda", "Esteban", "Esther", "Estrella", "Ethan", "Eva", "Evan", "Evangeline", "Evelyn", "Everett", "Ezekiel", "Ezra", "Fabian", "Faith", "Fatima", "Felix", "Fernanda", "Fernando", "Finn", "Fiona", "Francesca", "Francisco", "Frank", "Franklin", "Gabriel", "Gabriela", "Gabriella", "Gabrielle", "Gael", "Gage", "Garrett", "Gary", "Gavin", "Genesis", "Genevieve", "George", "Georgia", "Gerardo", "Gianna", "Giovanni", "Giselle", "Gloria", "Grace", "Gracie", "Grady", "Graham", "Grant", "Grayson", "Gregory", "Greyson", "Griffin", "Guadalupe", "Guillermo", "Gunner", "Gustavo", "Hadley", "Hailee", "Hailey", "Haley", "Hanna", "Hannah", "Harley", "Harmony", "Harper", "Harrison", "Hayden", "Hayden", "Haylee", "Hayley", "Haylie", "Hazel", "Heather", "Heaven", "Hector", "Heidi", "Helen", "Henry", "Holden", "Holly", "Hope", "Hudson", "Hugo", "Hunter", "Ian", "Imani", "Iris", "Isaac", "Isabel", "Isabella", "Isabelle", "Isaiah", "Isaias", "Isiah", "Ismael", "Israel", "Issac", "Itzel", "Ivan", "Ivy", "Izabella", "Izaiah", "Jace", "Jack", "Jackson", "Jacob", "Jacoby", "Jacqueline", "Jada", "Jade", "Jaden", "Jaden", "Jadon", "Jadyn", "Jaelyn", "Jaiden", "Jaime", "Jake", "Jakob", "Jalen", "Jamari", "Jamarion", "James", "Jameson", "Jamie", "Jane", "Janelle", "Janiya", "Janiyah", "Jared", "Jaslene", "Jasmin", "Jasmine", "Jason", "Jasper", "Javier", "Javon", "Jaxon", "Jaxson", "Jay", "Jayce", "Jayda", "Jayden", "Jayden", "Jaydon", "Jayla", "Jaylen", "Jayson", "Jazlyn", "Jazmin", "Jazmine", "Jeffrey", "Jenna", "Jennifer", "Jeremiah", "Jeremy", "Jerry", "Jesse", "Jessica", "Jesus", "Jillian", "Jimena", "Jimmy", "Joanna", "Joaquin", "Jocelyn", "Joe", "Joel", "Johan", "Johanna", "John", "Johnathan", "Johnny", "Jonah", "Jonas", "Jonathan", "Jonathon", "Jordan", "Jordan", "Jordyn", "Jorge", "Jose", "Joselyn", "Joseph", "Josephine", "Joshua", "Josiah", "Josie", "Josue", "Juan", "Judah", "Jude", "Julia", "Julian", "Juliana", "Julianna", "Julie", "Juliet", "Julio", "Julissa", "Julius", "Justice", "Justin", "Kade", "Kaden", "Kadence", "Kaelyn", "Kai", "Kaiden", "Kailey", "Kailyn", "Kaitlin", "Kaitlyn", "Kale", "Kaleb", "Kameron", "Kamryn", "Kane", "Kara", "Karen", "Karina", "Karla", "Karson", "Kassidy", "Kate", "Katelyn", "Katelynn", "Katherine", "Kathleen", "Kathryn", "Katie", "Kayden", "Kayden", "Kaydence", "Kayla", "Kaylee", "Kayleigh", "Kaylie", "Kaylin", "Keagan", "Keaton", "Keegan", "Keira", "Keith", "Kellen", "Kelly", "Kelsey", "Kelvin", "Kendall", "Kendra", "Kennedy", "Kenneth", "Kenzie", "Kevin", "Khalil", "Khloe", "Kiana", "Kiara", "Kiera", "Kiley", "Kimberly", "Kimora", "Kingston", "Kira", "Kobe", "Kolton", "Kristen", "Kristina", "Kristopher", "Kyla", "Kyle", "Kylee", "Kyleigh", "Kyler", "Kylie", "Kyra", "Lacey", "Laila", "Lana", "Lance", "Landen", "Landon", "Landyn", "Lane", "Larry", "Laura", "Lauren", "Lauryn", "Lawrence", "Layla", "Leah", "Leila", "Leilani", "Leland", "Lena", "Leo", "Leonardo", "Leonel", "Leslie", "Lesly", "Levi", "Lexi", "Lia", "Liam", "Lila", "Lilah", "Lilian", "Liliana", "Lillian", "Lilliana", "Lillie", "Lilly", "Lily", "Lincoln", "Lindsay", "Lindsey", "Lizbeth", "Logan", "Logan", "Lola", "London", "Lorenzo", "Louis", "Luca", "Lucas", "Lucia", "Lucy", "Luis", "Lukas", "Luke", "Luna", "Lydia", "Lyla", "Lyric", "Macie", "Mackenzie", "Macy", "Madalyn", "Maddison", "Maddox", "Madeleine", "Madeline", "Madelyn", "Madelynn", "Madilyn", "Madison", "Madisyn", "Madyson", "Maggie", "Makayla", "Makenna", "Makenzie", "Malachi", "Malia", "Malik", "Mallory", "Manuel", "Marc", "Marco", "Marcos", "Marcus", "Marely", "Margaret", "Maria", "Mariah", "Mariana", "Mario", "Marisol", "Marissa", "Mark", "Marlee", "Marley", "Marshall", "Martin", "Marvin", "Mary", "Mason", "Mateo", "Mathew", "Matthew", "Maurice", "Mauricio", "Max", "Maximilian", "Maximus", "Maxwell", "Maya", "Mckenna", "Mckenzie", "Megan", "Meghan", "Mekhi", "Melanie", "Melany", "Melissa", "Melody", "Melvin", "Meredith", "Mia", "Micah", "Michael", "Michaela", "Micheal", "Michelle", "Miguel", "Mikayla", "Miles", "Miley", "Milo", "Miracle", "Miranda", "Miriam", "Mitchell", "Moises", "Molly", "Monica", "Morgan", "Morgan", "Moses", "Mya", "Mylee", "Myles", "Nadia", "Nancy", "Naomi", "Nasir", "Natalia", "Natalie", "Nataly", "Natasha", "Nathan", "Nathaniel", "Nayeli", "Nehemiah", "Nelson", "Nevaeh", "Nia", "Nicholas", "Nickolas", "Nicolas", "Nicole", "Nikolas", "Nina", "Noah", "Noel", "Noelle", "Nolan", "Nora", "Norah", "Nyla", "Oliver", "Olivia", "Omar", "Orlando", "Oscar", "Owen", "Pablo", "Paige", "Paisley", "Paola", "Paris", "Parker", "Patricia", "Patrick", "Paul", "Paxton", "Payton", "Payton", "Pedro", "Penelope", "Perla", "Peter", "Peyton", "Peyton", "Philip", "Phillip", "Phoebe", "Phoenix", "Piper", "Porter", "Presley", "Preston", "Priscilla", "Quentin", "Quinn", "Quinton", "Rachael", "Rachel", "Raegan", "Rafael", "Ramon", "Randy", "Raul", "Raymond", "Reagan", "Rebecca", "Rebekah", "Reece", "Reed", "Reese", "Reese", "Reid", "Ricardo", "Richard", "Ricky", "Rihanna", "Riley", "Riley", "River", "Robert", "Roberto", "Rocco", "Rodrigo", "Roger", "Roman", "Romeo", "Ronald", "Rosa", "Rose", "Rowan", "Rowan", "Roy", "Ruben", "Ruby", "Russell", "Ruth", "Ryan", "Ryder", "Ryker", "Rylan", "Rylee", "Ryleigh", "Rylie", "Sabrina", "Sadie", "Sage", "Salvador", "Sam", "Samantha", "Samara", "Samuel", "Sandra", "Santiago", "Sara", "Sarah", "Sarai", "Sasha", "Saul", "Savanna", "Savannah", "Sawyer", "Scarlett", "Scott", "Sean", "Sebastian", "Selena", "Serena", "Serenity", "Sergio", "Seth", "Shane", "Shannon", "Shaun", "Shawn", "Shayla", "Shelby", "Sienna", "Sierra", "Silas", "Simon", "Skylar", "Skyler", "Skyler", "Sofia", "Solomon", "Sophia", "Sophie", "Spencer", "Stella", "Stephanie", "Stephen", "Steven", "Summer", "Sydney", "Talia", "Talon", "Tanner", "Taryn", "Tate", "Tatiana", "Tatum", "Taylor", "Taylor", "Teagan", "Terry", "Tessa", "Theodore", "Thomas", "Tiffany", "Timothy", "Titus", "Tony", "Tori", "Travis", "Trent", "Trenton", "Trevor", "Trey", "Trinity", "Tristan", "Tristen", "Triston", "Troy", "Tucker", "Ty", "Tyler", "Tyson", "Uriel", "Valentina", "Valeria", "Valerie", "Vanessa", "Veronica", "Victor", "Victoria", "Vincent", "Violet", "Vivian", "Viviana", "Walker", "Walter", "Wendy", "Wesley", "Weston", "William", "Willow", "Wyatt", "Xander", "Xavier", "Ximena", "Yahir", "Yasmin", "Zachariah", "Zachary", "Zackary", "Zander", "Zane", "Zayden", "Zion", "Zoe", "Zoey"
				              };
		}

		public RandomFirstName()
		{
			_randomFirstName = new RandomItem<string>(_firstNames);
		}

		public string Next()
		{
			return _randomFirstName.Next();
		}
	}
}